﻿using System;
using System.Collections.Generic;

namespace DbManager.DataRequest
{
    public class DataRequestCenaProezda:IDataRequest
    {
        private decimal? _priceAdult;
        private decimal? _priceChild;
        private int? _foreignKeyGorod;
        private int? _foreignKeyTransport;

        public void SetRequestParameters(Dictionary<string, string> parametersDictionary)
        {
            if (parametersDictionary.ContainsKey("priceOne") && parametersDictionary.ContainsKey("priceTwo"))
            {
                _priceAdult = decimal.Parse(parametersDictionary["priceOne"]);
                _priceChild = decimal.Parse(parametersDictionary["priceTwo"]);
            }

            if (parametersDictionary.ContainsKey("foreignKey1") && parametersDictionary.ContainsKey("foreignKey2"))
            {
                _foreignKeyTransport = Int32.Parse(parametersDictionary["foreignKey1"]);
                _foreignKeyGorod = Int32.Parse(parametersDictionary["foreignKey2"]);
            }
        }

        public string GetSelectQuery()
        {
            /*return "SELECT [Идентификатор], [Цена] FROM [Цена проезда] ORDER BY [Идентификатор]";*/
            return "SELECT [Цена проезда].Идентификатор, Город.Название AS Город, Транспорт.Название AS Транспорт, [Цена проезда].[Цена взрослый] AS [Цена(взрослый)], [Цена проезда].[Цена ребенок] AS [Цена(ребенок)] " +
                "FROM (([Цена проезда] INNER JOIN Транспорт ON [Цена проезда].[Идентификатор транспорт] = Транспорт.Идентификатор) INNER JOIN Город ON [Цена проезда].[Идентификатор город] = Город.Идентификатор) "+
                "ORDER BY Город.Название";
        }

        public string GetSelectQueryById()
        {
            throw new NotImplementedException();
        }

        public string GetInsertQuery()
        {
            if (_priceAdult == null || _priceChild == null || _foreignKeyTransport == null || _foreignKeyGorod == null)
            {
                return string.Empty;
            }
            return "INSERT INTO [Цена проезда] ([Идентификатор транспорт], [Идентификатор город], [Цена взрослый], [Цена ребенок]) VALUES (" + _foreignKeyTransport + ", " + _foreignKeyGorod + ", '" + _priceAdult + "', '" + _priceChild + "')";
        }

        public string GetUpdateQuery(int id)
        {
            if (_priceAdult == null || _priceChild == null || _priceAdult == null || id == 0)
            {
                return string.Empty;
            }
            return "UPDATE [Цена проезда] SET [Цена взрослый]='" + _priceAdult + "', [Цена ребенок]='" + _priceChild + "' WHERE [Идентификатор]=" + id;
        }

        public string GetDeleteQuery(int id)
        {
            if (id == 0)
            {
                return string.Empty;
            }
            return "DELETE FROM [Цена проезда] WHERE [Идентификатор]=" + id;
        }
    }
}
